home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2000 September / september_2000.iso / intercd / root / ^Linux / cfengine-1.5.3 / src / globals.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-08-09  |  26.0 KB  |  775 lines

  1. /* cfengine for GNU
  2.  
  3.         Copyright (C) 1995/6
  4.         Free Software Foundation, Inc.
  5.  
  6.    This file is part of GNU cfengine - written and maintained 
  7.    by Mark Burgess, Dept of Computing and Engineering, Oslo College,
  8.    Dept. of Theoretical physics, University of Oslo
  9.  
  10.    This program is free software; you can redistribute it and/or modify it
  11.    under the terms of the GNU General Public License as published by the
  12.    Free Software Foundation; either version 2, or (at your option) any
  13.    later version.
  14.  
  15.    This program is distributed in the hope that it will be useful,
  16.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.    GNU General Public License for more details.
  19.  
  20.   You should have received a copy of the GNU General Public License
  21.   along with this program; if not, write to the Free Software
  22.   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
  23.  
  24. */
  25.  
  26.  
  27. /*******************************************************************/
  28. /*                                                                 */
  29. /*  GLOBAL variables for cfengine                                  */
  30. /*                                                                 */
  31. /*  Although these are global in C, they are layed out in          */
  32. /*  terms of their ownership to certain logical "objects",         */
  33. /*  to illustrate the object oriented structure.                   */
  34. /*                                                                 */
  35. /*******************************************************************/
  36.  
  37. #include "cf.defs.h"
  38.  
  39. #define PUBLIC     /* Just for fun */
  40. #define PRIVATE
  41. #define PROTECTED
  42.  
  43. /*******************************************************************/
  44. /*                                                                 */
  45. /* Global : Truly global variables here                            */
  46. /*                                                                 */
  47. /*                                                                 */
  48. /*******************************************************************/
  49.  
  50. char VBUFF[bufsize]; /* General workspace, contents not guaranteed */
  51. char OUTPUT[bufsize*2];
  52. int AUTHENTICATED = false;
  53. char CHECKSUMDB[bufsize];
  54. int CHECKSUMUPDATES = false;
  55.  
  56. /*******************************************************************/
  57. /*                                                                 */
  58. /* TCP wrapper object. This is not part of cfengine, but these     */
  59. /* variables have to be defined anyway!                            */
  60. /*                                                                 */
  61. /*******************************************************************/
  62.  
  63.   PRIVATE int allow_severity  = 0;
  64.   PRIVATE int deny_severity   = 0;
  65.  
  66. /*******************************************************************/
  67. /*                                                                 */
  68. /* cfd.main object : the root application object                   */
  69. /*                                                                 */
  70. /*                                                                 */
  71. /*******************************************************************/
  72.  
  73.   PROTECTED  struct Auth *VADMIT=NULL;
  74.   PROTECTED  struct Auth *VADMITTOP=NULL;
  75.   PROTECTED  struct Auth *VDENY=NULL;
  76.   PROTECTED  struct Auth *VDENYTOP=NULL;
  77.  
  78. /*******************************************************************/
  79. /*                                                                 */
  80. /* cfengine.main object : the root application object              */
  81. /*                                                                 */
  82. /*                                                                 */
  83. /*******************************************************************/
  84.  
  85.   PUBLIC char VERSION[maxvarsize];
  86.   PUBLIC char *COPYRIGHT = "Free Software Foundation 1995, 1996, 1997\nDonated by Mark Burgess, Centre of Science and Technology\nFaculty of Engineering, Oslo College, 0254 Oslo, Norway";
  87.  
  88.   PRIVATE char *VPRECONFIG = "cf.preconf";
  89.   PRIVATE char *VRCFILE = "cfrc";
  90.  
  91.   PUBLIC char VINPUTFILE[bufsize];
  92.   PUBLIC char VCURRENTFILE[bufsize];
  93.   PUBLIC char VLOGFILE[bufsize];
  94.   PUBLIC char VSETUIDLOG[bufsize];
  95.   PUBLIC char VARCH[maxvarsize];
  96.   PUBLIC char VPREFIX[maxvarsize];
  97.   PUBLIC char VREPOSITORY[bufsize];
  98.   PUBLIC char ALLCLASSBUFFER[bufsize];
  99.  
  100.   PUBLIC short DEBUG = false;
  101.   PUBLIC short D1 = false;
  102.   PUBLIC short D2 = false;
  103.   PUBLIC short D3 = false;
  104.   PUBLIC short VERBOSE = false;
  105.   PUBLIC short INFORM = false;
  106.   PUBLIC short LOGGING = false;
  107.   PUBLIC short INFORM_save;
  108.   PUBLIC short LOGGING_save;
  109.   PUBLIC short CFPARANOID = false;
  110.   PUBLIC short SHOWACTIONS = false;
  111.  
  112.   PRIVATE   int RPCTIMEOUT = 30;          /* seconds */
  113.   PROTECTED int SENSIBLEFILECOUNT = 2;
  114.   PROTECTED int SENSIBLEFSSIZE = 1000;
  115.  
  116.   PUBLIC time_t CFSTARTTIME;
  117.  
  118.   PUBLIC enum classes VSYSTEMHARDCLASS;
  119.  
  120.   PUBLIC struct Item VDEFAULTBINSERVER =      /* see GetNameInfo(), main.c */
  121.       {
  122.       NULL,
  123.       NULL
  124.       };
  125.  
  126.   PUBLIC struct utsname VSYSNAME;                           /* For uname (2) */
  127.  
  128.   PUBLIC mode_t DEFAULTMODE = (mode_t) 0755;
  129.   PUBLIC mode_t DEFAULTSYSTEMMODE = (mode_t) 0644;
  130.  
  131.   PROTECTED int VIFELAPSED = 0;
  132.   PROTECTED int VEXPIREAFTER = 120;
  133.   PROTECTED int VDEFAULTIFELAPSED = 0;    /* minutes */
  134.   PROTECTED int VDEFAULTEXPIREAFTER = 120;
  135.  
  136.   PUBLIC int SD = cf_not_connected; /* socket */
  137.  
  138. /*******************************************************************/
  139.  /* Data structures - root pointers                                 */
  140.  /*******************************************************************/
  141.  
  142.   PROTECTED  struct Item *VTIMEZONE = NULL;
  143.   PROTECTED  struct Item *VMOUNTLIST = NULL;
  144.   PROTECTED  struct Item *VEXCLUDECOPY = NULL;
  145.   PROTECTED  struct Item *VEXCLUDELINK = NULL;
  146.   PROTECTED  struct Item *VCOPYLINKS = NULL;
  147.   PROTECTED  struct Item *VLINKCOPIES = NULL;
  148.   PROTECTED  struct Item *VEXCLUDEPARSE = NULL;
  149.   PROTECTED  struct Item *VCPLNPARSE = NULL;
  150.   PROTECTED  struct Item *VINCLUDEPARSE = NULL;
  151.   PROTECTED  struct Item *VIGNOREPARSE = NULL;
  152.   PROTECTED  struct Item *VSERVERLIST = NULL;
  153.  
  154.   PROTECTED  struct Item *VHEAP = NULL;      /* Points to the base of the attribute heap */
  155.   PROTECTED  struct Item *VNEGHEAP = NULL;
  156.   PROTECTED  struct Item *VMOUNTABLES = NULL;         /* Points to the list of mountables */
  157.   PROTECTED  struct Item *VMOUNTED = NULL;
  158.   PROTECTED  struct Tidy *VTIDY = NULL;               /* Points to the list of tidy specs */
  159.   PROTECTED  struct Tidy *VTIDYTOP = NULL;
  160.   PROTECTED  struct Item *VPROCESSES = NULL;                       /* Points to proc list */
  161.   PROTECTED  struct Disk *VREQUIRED = NULL;              /* List of required file systems */
  162.   PROTECTED  struct Disk *VREQUIREDTOP = NULL;
  163.   PROTECTED  struct ShellComm *VSCRIPT = NULL;              /* List of scripts to execute */
  164.   PROTECTED  struct ShellComm *VSCRIPTTOP = NULL;
  165.   PROTECTED  struct Interface *VIFLIST = NULL;
  166.   PROTECTED  struct Interface *VIFLISTTOP = NULL;
  167.   PROTECTED  struct Mounted *MOUNTED = NULL;             /* Files systems already mounted */
  168.   PROTECTED  struct MiscMount *VMISCMOUNT = NULL;
  169.   PROTECTED  struct MiscMount *VMISCMOUNTTOP = NULL;
  170.   PROTECTED  struct Item *VBINSERVERS = &VDEFAULTBINSERVER;
  171.   PROTECTED  struct Link *VLINK = NULL;
  172.   PROTECTED  struct Link *VLINKTOP = NULL;
  173.   PROTECTED  struct File *VFILE = NULL;
  174.   PROTECTED  struct File *VFILETOP = NULL;
  175.   PROTECTED  struct Image *VIMAGE = NULL;
  176.   PROTECTED  struct Image *VIMAGETOP=NULL;
  177.   PROTECTED  struct Item *VHOMESERVERS = NULL;
  178.   PROTECTED  struct Item *VSETUIDLIST = NULL;
  179.   PROTECTED  struct Disable *VDISABLELIST = NULL;
  180.   PROTECTED  struct Disable *VDISABLETOP = NULL;
  181.   PROTECTED  struct File *VMAKEPATH = NULL;
  182.   PROTECTED  struct File *VMAKEPATHTOP = NULL;
  183.   PROTECTED  struct Link *VCHLINK = NULL;
  184.   PROTECTED  struct Link *VCHLINKTOP = NULL;
  185.   PROTECTED  struct Item *VIGNORE = NULL;
  186.   PROTECTED  struct Item *VHOMEPATLIST = NULL;
  187.   PROTECTED  struct Item *EXTENSIONLIST = NULL;
  188.   PROTECTED  struct Item *SUSPICIOUSLIST = NULL;
  189.   PROTECTED  struct Item *VRESOLVE = NULL;
  190.   PROTECTED  struct Item *VIMPORT=NULL;
  191.   PROTECTED  struct Item *VACTIONSEQ=NULL;
  192.   PROTECTED  struct Item *VACCESSLIST=NULL;
  193.   PROTECTED  struct Item *VADDCLASSES=NULL;
  194.   PROTECTED  struct Item *VALLADDCLASSES=NULL;
  195.   PROTECTED  struct UnMount *VUNMOUNT=NULL;
  196.   PROTECTED  struct UnMount *VUNMOUNTTOP=NULL;
  197.   PROTECTED  struct Edit *VEDITLIST=NULL;
  198.   PROTECTED  struct Edit *VEDITLISTTOP=NULL;
  199.   PROTECTED  struct CFACL  *VACLLIST=NULL;
  200.   PROTECTED  struct CFACL  *VACLLISTTOP=NULL;
  201.   PROTECTED  struct Item *VCLASSDEFINE=NULL;
  202.   PROTECTED  struct Process *VPROCLIST=NULL;
  203.   PROTECTED  struct Process *VPROCTOP=NULL;
  204.   PROTECTED  struct Item *VREPOSLIST=NULL;
  205.  
  206.  
  207.  /*********************************************************************/
  208.  /* Resource names                                                    */
  209.  /*********************************************************************/
  210.  
  211.   PRIVATE char *VRESOURCES[] = /* one for each major variable in class.c */
  212.      {
  213.      "mountcomm",
  214.      "unmountcomm",
  215.      "ethernet",
  216.      "mountopts",
  217.      "unused",
  218.      "fstab",
  219.      "maildir",
  220.      "netstat",
  221.      "pscomm",
  222.      "psopts",
  223.      NULL
  224.      };
  225.  
  226.  
  227.  /*******************************************************************/
  228.  /* Reserved variables                                              */
  229.  /*******************************************************************/
  230.  
  231.  PROTECTED char      VFACULTY[maxvarsize];
  232.  PROTECTED char       VDOMAIN[maxvarsize];
  233.  PROTECTED char       VSYSADM[maxvarsize];
  234.  PROTECTED char      VNETMASK[maxvarsize];
  235.  PROTECTED char    VBROADCAST[maxvarsize];
  236.  PROTECTED char   VMAILSERVER[bufsize];
  237.  PROTECTED char VDEFAULTROUTE[maxvarsize];
  238.  PROTECTED char      VNFSTYPE[maxvarsize];
  239.  PROTECTED char       VFQNAME[maxvarsize];
  240.  PROTECTED char       VUQNAME[maxvarsize];
  241.  PROTECTED char       LOGFILE[maxvarsize];
  242.  PROTECTED char         VYEAR[5];
  243.  
  244.  /*******************************************************************/
  245.  /* Command line options                                            */
  246.  /*******************************************************************/
  247.  
  248.   /* GNU STUFF FOR LATER #include "getopt.h" */
  249.  
  250. #include "../pub/getopt.h"
  251.  
  252.  PRIVATE struct option OPTIONS[] =
  253.       {
  254.       { "help",no_argument,0,'h' },
  255.       { "debug",optional_argument,0,'d' }, 
  256.       { "verbose",no_argument,0,'v' },
  257.       { "traverse-links",no_argument,0,'l' },
  258.       { "recon",no_argument,0,'n' },
  259.       { "dry-run",no_argument,0,'n'},
  260.       { "just-print",no_argument,0,'n'},
  261.       { "no-ifconfig",no_argument,0,'i' },
  262.       { "file",required_argument,0,'f' },
  263.       { "parse-only",no_argument,0,'p' },
  264.       { "no-mount",no_argument,0,'m' },
  265.       { "no-check-files",no_argument,0,'c' },
  266.       { "no-check-mounts",no_argument,0,'C' },
  267.       { "no-tidy",no_argument,0,'t' },
  268.       { "no-commands",no_argument,0,'s' },
  269.       { "sysadm",no_argument,0,'a' },
  270.       { "version",no_argument,0,'V' },
  271.       { "define",required_argument,0,'D' },
  272.       { "negate",required_argument,0,'N' },
  273.       { "undefine",required_argument,0,'N' },
  274.       { "delete-stale-links",no_argument,0,'L' },
  275.       { "no-warn",no_argument,0,'w' },
  276.       { "silent",no_argument,0,'S' },
  277.       { "quiet",no_argument,0,'w' },
  278.       { "no-preconf",no_argument,0,'x' },
  279.       { "no-links",no_argument,0,'X'},
  280.       { "no-edits",no_argument,0,'e'},
  281.       { "enforce-links",no_argument,0,'E'},
  282.       { "no-copy",no_argument,0,'k'},
  283.       { "use-env",no_argument,0,'u'},
  284.       { "no-processes",no_argument,0,'P'},
  285.       { "underscore-classes",no_argument,0,'U'},
  286.       { "no-hard-classes",no_argument,0,'H'},
  287.       { "no-splay",no_argument,0,'q'},
  288.       { "no-lock",no_argument,0,'K'},
  289.       { "auto",no_argument,0,'A'},
  290.       { "inform",no_argument,0,'I'},
  291.       { "no-modules",no_argument,0,'M'},
  292.       { "force-net-copy",no_argument,0,'b'},
  293.       { "secure-input",no_argument,0,'Y'},
  294.       { NULL,0,0,0 }
  295.       };
  296.  
  297.  
  298.  /*********************************************************************/
  299.  /* Actions                                                           */
  300.  /*********************************************************************/
  301.  
  302.  
  303.  PRIVATE char *ACTIONTEXT[] =
  304.       {
  305.       "",
  306.       "Control Defintions:",
  307.       "Groups:",
  308.       "File Imaging:",
  309.       "Resolve:",
  310.       "Processes:",
  311.       "Files:",
  312.       "Tidy:",
  313.       "Home Servers:",
  314.       "Binary Servers:",
  315.       "Mail Server:",
  316.       "Required Filesystems",
  317.       "Reading Mountables",
  318.       "Links:",
  319.       "Import files:",
  320.       "User Shell Commands:",
  321.       "Disable Files:",
  322.       "Make Directory Path:",
  323.       "Ignore File Paths:",
  324.       "Broadcast Mode:",
  325.       "Default Packet Route:",
  326.       "Miscellaneous Mountables:",
  327.       "Edit Simple Text File:",
  328.       "Unmount filesystems:",
  329.       "Admit network access:",
  330.       "Deny network access:",
  331.       "Access control lists:",
  332.       "Additional network interfaces",
  333.       NULL
  334.       };
  335.  
  336.  
  337.  PRIVATE char *ACTIONID[] =    /* The actions which may be specified as indexed */
  338.       {                        /* macros in the "special" section of the file   */
  339.       "",
  340.       "control",
  341.       "groups",
  342.       "copy",
  343.       "resolve",
  344.       "processes",
  345.       "files",
  346.       "tidy",
  347.       "homeservers",
  348.       "binservers",
  349.       "mailserver",
  350.       "required",
  351.       "mountables",
  352.       "links",
  353.       "import",
  354.       "shellcommands",
  355.       "disable",
  356.       "makepath",
  357.       "ignore",
  358.       "broadcast",
  359.       "defaultroute",
  360.       "miscmounts",
  361.       "editfiles",
  362.       "unmount",
  363.       "admit",
  364.       "deny",
  365.       "acl",
  366.       "interfaces",
  367.       NULL
  368.       };
  369.  
  370.   /*********************************************************************/
  371.   /* file/image actions                                                */
  372.   /*********************************************************************/
  373.  
  374.   PROTECTED char *FILEACTIONTEXT[] = 
  375.       {
  376.       "warnall",
  377.       "warnplain",
  378.       "warndirs",
  379.       "fixall",
  380.       "fixplain",
  381.       "fixdirs",
  382.       "touch",
  383.       "linkchildren",
  384.       "create",
  385.       NULL
  386.       };
  387.  
  388.   /*********************************************************************/
  389.  
  390.   PRIVATE char *ACTIONSEQTEXT[] =
  391.       {
  392.       "directories",
  393.       "links",
  394.       "simplelinks",
  395.       "childlinks",
  396.       "mailcheck",
  397.       "required",
  398.       "tidy",
  399.       "shellcommands",
  400.       "files",
  401.       "disable",
  402.       "addmounts",
  403.       "editfiles",
  404.       "mountall",
  405.       "unmount",
  406.       "resolve",
  407.       "copy",
  408.       "netconfig",
  409.       "checktimezone",
  410.       "mountinfo",
  411.       "processes",
  412.       "none",
  413.       NULL
  414.       };
  415.  
  416.  
  417. /*******************************************************************/
  418. /*                                                                 */
  419. /* parse object : variables belonging to the Parse object          */
  420. /*                                                                 */
  421. /*                                                                 */
  422. /*******************************************************************/
  423.  
  424.   PUBLIC short ISCFENGINE;  /* for re-using parser code in cfd */
  425.  
  426.   PRIVATE short TIDYDIRS = false;
  427.   PRIVATE short TRAVLINKS = false;
  428.   PRIVATE short PTRAVLINKS = false;
  429.   PRIVATE short DEADLINKS = true;
  430.   PRIVATE short DONTDO = false;
  431.   PRIVATE short IFCONF = true;
  432.   PRIVATE short PARSEONLY = false;
  433.   PRIVATE short GOTMOUNTINFO = true;
  434.   PRIVATE short NOMOUNTS = false;
  435.   PRIVATE short NOMODULES = false;
  436.   PRIVATE short NOFILECHECK = false;
  437.   PRIVATE short NOTIDY = false;
  438.   PRIVATE short NOSCRIPTS = false;
  439.   PRIVATE short PRSYSADM = false;
  440.   PRIVATE short MOUNTCHECK = false;
  441.   PRIVATE short NOPROCS = false;
  442.   PRIVATE short NOEDITS = false;
  443.   PRIVATE short KILLOLDLINKS = false;
  444.   PRIVATE short IGNORELOCK = false;
  445.   PRIVATE short NOPRECONFIG = false;
  446.   PRIVATE short WARNINGS = true;
  447.   PRIVATE short NONALPHAFILES = false;
  448.   PRIVATE short MINUSF = false;
  449.   PRIVATE short NOLINKS = false;
  450.   PRIVATE short ENFORCELINKS = false;
  451.   PRIVATE short FORCELINK;
  452.   PRIVATE short NOCOPY = false;
  453.   PRIVATE short FORCENETCOPY = false;
  454.   PRIVATE short SILENT=false;
  455.   PRIVATE short EDITVERBOSE=false;
  456.   PRIVATE short LINKSILENT;
  457.   PRIVATE short FORCECOPY=false;
  458.   PRIVATE short IMAGEBACKUP=true;
  459.   PRIVATE short ROTATE=0;
  460.   PRIVATE short USEENVIRON=false;
  461.   PRIVATE short PROMATCHES=-1;
  462.   PRIVATE short EDABORTMODE=false;
  463.   PRIVATE short UNDERSCORE_CLASSES=false;
  464.   PRIVATE short NOHARDCLASSES=false;
  465.   PRIVATE short NOSPLAY = false;
  466.  
  467.  
  468.   PROTECTED  struct Item *VACLBUILD = NULL;
  469.  
  470.   PRIVATE char LINKTYPE = 's';
  471.   PRIVATE char AGETYPE = 'a';
  472.   PRIVATE char COPYTYPE = 't';
  473.   PRIVATE char DEFAULTCOPYTYPE = 't';
  474.   PRIVATE char REPOSCHAR = '_';
  475.   PRIVATE char LISTSEPARATOR = ':';
  476.   PRIVATE char LINKDIRS = 'k';
  477.   PRIVATE char DISCOMP = '=';
  478.   PRIVATE char USESHELL = 'y';  /* yes or no */
  479.   PRIVATE char PURGE = 'n';
  480.   PRIVATE char LOGP = 'd';  /* y,n,d=default*/
  481.   PRIVATE char INFORMP = 'd';
  482.   PRIVATE char MOUNTMODE = 'w';   /* o or w for rw/ro*/
  483.   PRIVATE char DELETEDIR = 't';   /* t=true */
  484.   PRIVATE char DELETEFSTAB = 't';
  485.   PRIVATE char FORCE = 'f';
  486.   PRIVATE char STEALTH = 'f';
  487.   PRIVATE char CHECKSUM = 'n';
  488.  
  489.   PRIVATE char VUIDNAME[maxvarsize];
  490.   PRIVATE char VGIDNAME[maxvarsize];
  491.  
  492.   PRIVATE char CURRENTITEM[bufsize];  /* Many of these are recycled during run/parsing */
  493.   PRIVATE char GROUPBUFF[bufsize];
  494.   PRIVATE char ACTIONBUFF[bufsize];
  495.   PRIVATE char CURRENTPATH[bufsize];
  496.   PRIVATE char CLASSBUFF[bufsize];
  497.   PRIVATE char LINKFROM[bufsize];
  498.   PRIVATE char LINKTO[bufsize];
  499.   PRIVATE char ERROR[bufsize];
  500.   PRIVATE char MOUNTFROM[bufsize];
  501.   PRIVATE char MOUNTONTO[bufsize];
  502.   PRIVATE char DESTINATION[bufsize];
  503.   PRIVATE char IMAGEACTION[bufsize];  /* end recyclable (see cf.defs.h) */
  504.   PRIVATE char VIFNAME[16];
  505.   PRIVATE char VIFNAMEOVERRIDE[16];
  506.  
  507.   PUBLIC int ERRORCOUNT = 0;
  508.   PUBLIC int LINENUMBER = 1;
  509.  
  510.   PRIVATE int HAVEUID = 0;
  511.   PRIVATE int DISABLESIZE=99999999;
  512.   PRIVATE int TIDYSIZE=0;
  513.   PRIVATE int VRECURSE;
  514.   PRIVATE int VAGE;
  515.   PRIVATE int VTIMEOUT=0;
  516.  
  517.   PRIVATE mode_t PLUSMASK;
  518.   PRIVATE mode_t MINUSMASK;
  519.  
  520.   PRIVATE u_long PLUSFLAG;
  521.   PRIVATE u_long MINUSFLAG;
  522.  
  523.  /* Parsing flags etc */
  524.  
  525.   PUBLIC enum actions ACTION = none;
  526.   PRIVATE enum vnames CONTROLVAR = nonexistentvar;
  527.   PRIVATE enum fileactions FILEACTION = warnall;
  528.  
  529.   PRIVATE flag ACTION_IS_LINK = false;
  530.   PRIVATE flag ACTION_IS_LINKCHILDREN = false;
  531.   PRIVATE flag MOUNT_ONTO = false;
  532.   PRIVATE flag MOUNT_FROM = false;
  533.   PRIVATE flag HAVE_RESTART = false;
  534.   PRIVATE flag ACTIONPENDING = false;
  535.   PRIVATE flag HOMECOPY=false;
  536.   PRIVATE short SECURE=false;
  537.  
  538.   PRIVATE char *COMMATTRIBUTES[] =
  539.      {
  540.      "recurse",
  541.      "mode",
  542.      "owner",
  543.      "group",
  544.      "age",
  545.      "action",
  546.      "pattern",
  547.      "links",
  548.      "type",
  549.      "destination",
  550.      "force",
  551.      "backup",
  552.      "rotate",
  553.      "size",
  554.      "matches",
  555.      "signal",
  556.      "exclude",
  557.      "copy",
  558.      "symlink",
  559.      "copytype",
  560.      "linktype",
  561.      "include",
  562.      "dirlinks",
  563.      "rmdirs",
  564.      "server",
  565.      "define",
  566.      "timeout",
  567.      "freespace",
  568.      "nofile",
  569.      "acl",
  570.      "purge",
  571.      "useshell",
  572.      "syslog",
  573.      "inform",
  574.      "netmask",
  575.      "broadcast",
  576.      "ignore",
  577.      "deletedir",
  578.      "deletefstab",
  579.      "stealth",
  580.      "checksum",
  581.      "flags",
  582.      "secure",
  583.      "root",
  584.      NULL
  585.      };
  586.  
  587. /*******************************************************************/
  588. /*                                                                 */
  589. /* editfiles object : variables belonging to Editfiles             */
  590. /*                    editfiles uses Item                          */
  591. /*                                                                 */
  592. /*******************************************************************/
  593.  
  594.   PUBLIC int EDITFILESIZE = 10000;
  595.  
  596.   PRIVATE int NUMBEROFEDITS = 0;
  597.   PRIVATE char VEDITABORT[maxlinksize];
  598.   PRIVATE int CURRENTLINENUMBER = 1;           /* current line number in file */
  599.   PRIVATE struct Item *CURRENTLINEPTR = NULL;  /* Ptr to current line */
  600.  
  601.   PRIVATE struct re_pattern_buffer *SEARCHPATTBUFF;
  602.   PRIVATE struct re_pattern_buffer *PATTBUFFER;
  603.  
  604.   PRIVATE int EDITGROUPLEVEL=0;
  605.   PRIVATE int SEARCHREPLACELEVEL=0;
  606.   PRIVATE int FOREACHLEVEL = 0;
  607.  
  608.   PRIVATE int AUTOCREATED = 0;
  609.  
  610.   PRIVATE char *COMMENTSTART;
  611.   PRIVATE char *COMMENTEND;
  612.  
  613.   PUBLIC char *VEDITNAMES[] =
  614.      {
  615.      "NoEdit",
  616.      "DeleteLinesStarting",
  617.      "DeleteLinesContaining",
  618.      "DeleteLinesMatching",
  619.      "AppendIfNoSuchLine",
  620.      "PrependIfNoSuchLine",
  621.      "WarnIfNoSuchLine",
  622.      "WarnIfLineMatching",
  623.      "WarnIfNoLineMatching",
  624.      "WarnIfLineStarting",
  625.      "WarnIfLineContaining",
  626.      "WarnIfNoLineStarting",
  627.      "WarnIfNoLineContaining",
  628.      "HashCommentLinesContaining",
  629.      "HashCommentLinesStarting",
  630.      "HashCommentLinesMatching",
  631.      "SlashCommentLinesContaining",
  632.      "SlashCommentLinesStarting",
  633.      "SlashCommentLinesMatching",
  634.      "PercentCommentLinesContaining",
  635.      "PercentCommentLinesStarting",
  636.      "PercentCommentLinesMatching",
  637.      "ResetSearch",
  638.      "SetSearchRegExp",
  639.      "LocateLineMatching",
  640.      "InsertLine",
  641.      "IncrementPointer",
  642.      "ReplaceLineWith",
  643.      "DeleteToLineMatching",
  644.      "HashCommentToLineMatching",
  645.      "PercentCommentToLineMatching",
  646.      "SetScript",
  647.      "RunScript",
  648.      "RunScriptIfNoLineMatching",
  649.      "RunScriptIfLineMatching",
  650.      "AppendIfNoLineMatching",
  651.      "PrependIfNoLineMatching",
  652.      "DeleteNLines",
  653.      "EmptyEntireFilePlease",
  654.      "GotoLastLine",
  655.      "BreakIfLineMatches",
  656.      "BeginGroupIfNoMatch",
  657.      "BeginGroupIfNoLineMatching",
  658.      "BeginGroupIfNoSuchLine",
  659.      "EndGroup",
  660.      "Append",
  661.      "Prepend",
  662.      "SetCommentStart",
  663.      "SetCommentEnd",
  664.      "CommentLinesMatching",
  665.      "CommentLinesStarting",
  666.      "CommentToLineMatching",
  667.      "CommentNLines",
  668.      "UnCommentNLines",
  669.      "ReplaceAll",
  670.      "With",
  671.      "SetLine",
  672.      "FixEndOfLine",
  673.      "AbortAtLineMatching",
  674.      "UnsetAbort",
  675.      "AutomountDirectResources",
  676.      "UnCommentLinesContaining",
  677.      "UnCommentLinesMatching",
  678.      "InsertFile",
  679.      "CommentLinesContaining",
  680.      "BeginGroupIfFileIsNewer",
  681.      "BeginGroupIfFileExists",
  682.      "BeginGroupIfNoLineContaining",
  683.      "AutoCreate",
  684.      "ForEachLineIn",
  685.      "EndLoop",
  686.      "ReplaceLinesMatchingField",
  687.      "SplitOn",
  688.      "AppendToLineIfNotContains",
  689.      "DeleteLinesAfterThisMatching",
  690.      "DefineClasses",
  691.      "CatchAbort",
  692.      "Backup",
  693.      "Syslog",
  694.      "Inform",
  695.      NULL
  696.      };
  697.  
  698.  
  699. /*******************************************************************/
  700. /*                                                                 */
  701. /* Processes object : Process                                      */
  702. /*                                                                 */
  703. /*                                                                 */
  704. /*******************************************************************/
  705.  
  706.   PUBLIC char *SIGNALS[] =
  707.      {
  708.      "NOSIG",
  709.      "SIGHUP",        /* hangup */
  710.      "SIGINT",        /* interrupt */
  711.      "SIGQUIT",       /* quit */
  712.      "SIGILL",        /* illegal instruction (not reset when caught) */
  713.      "SIGTRAP",       /* trace trap (not reset when caught) */
  714.      "SIGIOT",        /* IOT instruction */
  715.      "SIGEMT",        /* EMT instruction */
  716.      "SIGFPE",        /* floating point exception */
  717.      "SIGKILL",       /* kill (cannot be caught or ignored) */
  718.      "SIGBUS",        /* bus error */
  719.      "SIGSEGV",       /* segmentation violation */
  720.      "SIGSYS",        /* bad argument to system call */
  721.      "SIGPIPE",       /* write on a pipe with no one to read it */
  722.      "SIGALRM",       /* alarm clock */
  723.      "SIGTERM",       /* software termination signal from kill */
  724.      "SIGURG",        /* urgent condition on IO channel */
  725.      "SIGSTOP",       /* sendable stop signal not from tty */
  726.      "SIGTSTP",       /* stop signal from tty */
  727.      "SIGCONT",       /* continue a stopped process */
  728.      "SIGCHLD",       /* to parent on child stop or exit */
  729.      "SIGTTIN",       /* to readers pgrp upon background tty read */
  730.      "SIGTTOU",       /* like TTIN for output if (tp->t_local<OSTOP) */
  731.      "SIGIO",         /* input/output possible signal */
  732.      "SIGXCPU",       /* exceeded CPU time limit */
  733.      "SIGXFSZ",       /* exceeded file size limit */
  734.      "SIGVTALRM",     /* virtual time alarm */
  735.      "SIGPROF",       /* profiling time alarm */
  736.      "SIGWINCH",      /* window changed */
  737.      "SIGLOST",       /* resource lost (eg, record-lock lost) */
  738.      "SIGUSR1",       /* user defined signal 1 */
  739.      "SIGUSR2"
  740.      };
  741.  
  742.  
  743. /*******************************************************************/
  744. /*                                                                 */
  745. /* Network client-server object : Net                              */
  746. /*                                                                 */
  747. /*                                                                 */
  748. /*******************************************************************/
  749.  
  750.   PRIVATE unsigned short PORTNUMBER = 0;
  751.   PRIVATE char VIPADDRESS[18];
  752.   PRIVATE char CFSERVER[maxvarsize];
  753.   PRIVATE int  CF_TIMEOUT = 10;
  754.  
  755.   PRIVATE int  CFSIGNATURE;
  756.   PRIVATE char CFDES1[9];
  757.   PRIVATE char CFDES2[9];
  758.   PRIVATE char CFDES3[9];
  759.  
  760. /*******************************************************************/
  761. /*                                                                 */
  762. /* Adaptive lock object : Lock                                     */
  763. /*                                                                 */
  764. /*                                                                 */
  765. /*******************************************************************/
  766.  
  767.   PUBLIC char VLOCKDIR[bufsize];
  768.   PUBLIC char VLOGDIR[bufsize];
  769.   PUBLIC char VCANONICALFILE[bufsize];
  770.  
  771.   PUBLIC FILE *VLOGFP;
  772.  
  773. /* EOF */
  774.  
  775.